const fs = require('fs');
const path = require('path');
const { generateMultiVideoPageFlipCommand } = require('../src/utils/ffmpegCommands_v3');

console.log('开始测试多视频翻页效果命令生成...\n');

// 确保输出目录存在
const outputDir = './output/videos';
if (!fs.existsSync(outputDir)) {
  fs.mkdirSync(outputDir, { recursive: true });
}

// 测试使用的视频路径（示例）
const videoPaths = [
  './input/sample1.mp4',
  './input/sample2.mp4'
];

// 验证视频文件是否存在
let filesExist = true;
for (const videoPath of videoPaths) {
  if (!fs.existsSync(videoPath)) {
    console.warn(`警告: 找不到视频文件 ${videoPath} (测试仍将生成命令但不会执行)`);
    filesExist = false;
  }
}

console.log('使用的测试视频:');
videoPaths.forEach((path, index) => {
  console.log(`  ${index + 1}. ${path}`);
});
console.log();

// 测试1: 使用默认参数
console.log('测试1: 使用默认参数生成多视频翻页效果...');
const outputPath1 = path.join(outputDir, 'multi_video_page_flip_default.mp4');
try {
  const command1 = generateMultiVideoPageFlipCommand(videoPaths, { outputPath: outputPath1 });
  
  console.log('生成的FFmpeg命令:');
  console.log(command1);
  console.log();
  
  // 将命令保存到文件中便于查看
  fs.writeFileSync('./temp/command_multi_video_test1.txt', command1, 'utf-8');
  console.log('✓ 测试1命令生成成功\n');
} catch (error) {
  console.error('✗ 测试1失败:', error.message);
}

// 测试2: 使用自定义参数
console.log('测试2: 使用自定义参数生成多视频翻页效果...');
const outputPath2 = path.join(outputDir, 'multi_video_page_flip_custom.mp4');
try {
  const command2 = generateMultiVideoPageFlipCommand(videoPaths, { 
    durationPerVideo: 7,
    transitionDuration: 2,
    outputPath: outputPath2
  });
  
  console.log('生成的FFmpeg命令:');
  console.log(command2);
  console.log();
  
  // 将命令保存到文件中便于查看
  fs.writeFileSync('./temp/command_multi_video_test2.txt', command2, 'utf-8');
  console.log('✓ 测试2命令生成成功\n');
} catch (error) {
  console.error('✗ 测试2失败:', error.message);
}

// 测试3: 只使用一个视频
console.log('测试3: 使用单个视频生成...');
const outputPath3 = path.join(outputDir, 'single_video.mp4');
try {
  const command3 = generateMultiVideoPageFlipCommand([videoPaths[0]], { outputPath: outputPath3 });
  
  console.log('生成的FFmpeg命令:');
  console.log(command3);
  console.log();
  
  // 将命令保存到文件中便于查看
  fs.writeFileSync('./temp/command_multi_video_test3.txt', command3, 'utf-8');
  console.log('✓ 测试3命令生成成功\n');
} catch (error) {
  console.error('✗ 测试3失败:', error.message);
}

console.log('所有测试完成！命令已生成并保存到以下文件:');
console.log('  1. ./temp/command_multi_video_test1.txt (默认参数)');
console.log('  2. ./temp/command_multi_video_test2.txt (自定义参数)');
console.log('  3. ./temp/command_multi_video_test3.txt (单个视频)');
console.log();
console.log('输出视频将生成到:');
console.log('  - ./output/videos/multi_video_page_flip_default.mp4');
console.log('  - ./output/videos/multi_video_page_flip_custom.mp4');
console.log('  - ./output/videos/single_video.mp4');
console.log();

if (filesExist) {
  console.log('注意: 视频文件存在，可以手动运行生成的命令进行实际测试');
} else {
  console.log('注意: 因为测试视频文件不存在，仅生成了命令文本。要实际运行，请提供有效的测试视频文件。');
}